// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.ast.SQLObject;
// import com.alibaba.druid.sql.ast.SQLSetQuantifier;
// import com.alibaba.druid.sql.ast.statement.*;
// import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerSelectQueryBlock;
// import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerTop;
// import com.alibaba.druid.sql.parser.*;
#pragma once
#include "../../../parser/SQLSelectParser.h"

class SQLServerSelectParser : virtual public SQLSelectParser
{
public:
  SQLServerSelectParser(string_ptr sql);

  SQLServerSelectParser(SQLExprParser_ptr exprParser);

  SQLServerSelectParser(SQLExprParser_ptr exprParser, SQLSelectListCache_ptr selectListCache);

  SQLSelect_ptr select();

  SQLSelectQuery_ptr query(SQLObject_ptr parent, BOOL_ptr acceptUnion);

  SQLServerExprParser_ptr createExprParser();

  SQLTableSource_ptr parseTableSourceRest(SQLTableSource_ptr tableSource);
};
